// 知识点1：exception表示的含义是某处出错，但错误细节未知，what是一个虚函数，所以引用捕获时会发生动态绑定

// 知识点2：自己定义的异常类型和标准库的异常类处理方式完全一样，一处抛出一处捕获

// 主要理解isbn_mismatch其实是一个继承的异常类

// #include <iostream>
// #include <string>
// //18.9
// struct out_of_stock :public std::runtime_error
// {
//     explicit out_of_stock(const std::string &s) :std::runtime_error(s) {}
// };

// struct isbn_mismatch :public std::logic_error
// {
//     explicit isbn_mismatch(const std::string &s) :std::logic_error(s) {}
//     isbn_mismatch(const std::string &s, const std::string &ls, const
//     std::string &rs)
//         :std::logic_error(s), left(ls), right(rs)
//     {}
//     std::string left;
//     std::string right;
// };
